Il design fondamentale di un sistema computazionale è definito dal rapporto tra l'Unità di Elaborazione e la Memoria. La principale differenza risiede nel fatto che istruzioni e dati condividano un percorso comune o utilizzino canali indipendenti.
1. Architettura di von Neumann
Utilizzata da sistemi general-purpose come x86-64, questo modello presenta uno spazio di memoria unificato. L'unità centrale accede sia al codice che ai dati tramite un singolo bus, causando il collo di bottiglia di von Neumann: il ritardo subito quando l'unità centrale deve multiplexare il bus tra il prelevamento delle istruzioni e l'accesso agli operandi.
2. Architettura di Harvard
Comune nei processori specializzati e nelle implementazioni della cache L1 ARMv8-A della cache L1, questo design utilizza archiviazione fisica separata della memoria e percorsi di segnale. Ciò permette il prelievo simultaneo di un opcode e di un operando dati, aumentando significativamente il throughput.
Diagramma a blocchi: Ciclo di prelievo della memoria nell'architettura di von Neumann che mostra l'utilizzo sequenziale del bus.
3. Convergenza Strutturale
I moderni sistemi HPC spesso utilizzano una architettura di Harvard modificata. Comportano come macchine di Harvard a livello di cache L1 (cache I e D separate) per massimizzare la velocità, mantenendo contemporaneamente un modello di von Neumann nella RAM principale per flessibilità programmabile.